package com.sky.resourceBundle;

import java.io.FileInputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.*;

/**
 * @author : wushikai
 * <p>
 * date : 2022-05-09
 *
 *
 *  resourceBundle 有特殊机制, 和普通 的 properties 文件还不一样哦;
 *
 *  Java使用java.util.ResourceBundle 类的方式来读取properties文件时  不支持中文，
 * 要想支持中文必须将文件设置为ISO-8859-1编码格式，这对于开发工具默认为UTF-8来说很不友好，而且就算用ISO-8859-1编码，
 * 当其他人将这个项目导入开发工具时很容易出现这个properties文件中的内容有乱码（前提是该文件中包含中文)
 *
 *
 *
 *
 */
public class ResourceBundleDemo {



    private static void readBundle(){

        ResourceBundle bundle = ResourceBundle.getBundle("LocalString/LocalStrings", new Locale("zh", "CN"));


        Enumeration<String> keys = bundle.getKeys();

        while (keys.hasMoreElements()){

            String key = keys.nextElement();

            String value =  new String(bundle.getString(key).getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);

            System.out.println(key + " : "+value);
        }

    }

    /**
     * 使用 properties  这个一样乱码
     * */
    private  static void readProperties ( ){

        Properties properties = new Properties();
        try {
            properties.load(  new FileInputStream("D:\\java\\codeLibraries\\javaEE\\tomcat-embed\\src\\main\\resources\\LocalString\\LocalStrings_zh_CN.properties"));

            Set<String> keys = properties.stringPropertyNames();
            for (String key : keys) {

                String value = properties.getProperty(key);

                System.out.println(key + " : "+value);
            }


        } catch (IOException e) {
            e.printStackTrace();
        }


    }





    public static void main(String[] args)   {

        readBundle();
        System.out.println("---------------------");
        readProperties();

    }



}
